Adjacent characters generated by content processing applications are displayed with particular distances between them. For a given character font, there are default distances to the left and right associated with each character. Together, the default distances of adjacent characters determine an initial value for how far apart the characters will be when they are displayed. Separate from the default individual distances, there are additional distances associated with some font sets in some content processing applications. These additional distances determine how far particular pairs of adjacent characters will deviate from their default distances. These additional distances can be positive or negative and are used to produce better results than default distances alone.
The application of such distance adjustments is called “kerning”. Many programs (e.g., content processing applications, word processors, equation editors, etc) use “kerning tables” that associate pairs of adjacent letters with a distance adjustment. For example, some programs use a kerning table that brings letters such as capital “W” and capital “A” closer together than the default values. The default values of some characters keep the characters from overlapping when they are displayed adjacent to each other, but do not account for the fact that the right side of the capital “W” is high, while the left side of the capital “A” is low, meaning that the letters “WA” can be moved closer together without overlapping.
Kerning tables in previous programs were manually generated, with a font designer determining which pairs of adjacent characters should be moved closer or farther than their default distances would indicate. Because of limitations on font designer time and storage space, Kerning tables used by some content processing applications are only provided within a particular font and style (e.g., Times New Roman, plain) and are not provided for adjacent characters when one is a subscript and the other is not, adjacent characters when one is a superscript and the other is not, adjacent characters in two different fonts, adjacent characters in two different font sizes, or adjacent characters in two different styles (e.g., one bold, one italic).
The size of kerning tables increases as the square of the number of characters in the kerning table. Every character, in every font, in every style, and in every relative size would be an additional character for a “complete” kerning table. As an example of the rapid increase in the number of characters, an italic lower case “f” to the left of a non-italic (plain) close quotation mark would require a separate entry in a kerning table from a non-italic (plain) lower case “f” to the left of a non-italic (plain) close quotation mark. Another entry would be required for a bold “f” to the left of a non-italic (plain) close quotation mark. Still another entry would be required for a bold, italicized “f” to the left of a non-italic (plain) close quotation mark. More entries would be required for subscripts and superscripts of the various styles of lower case “f” to the left of a non-italic (plain) close quotation mark. Still more entries would be required for bold, italic, and bold-italic close quotation marks, etc. Merely increasing the number of possible fonts from 1 to 10 would raise the number of possible character pairs by a factor of 100. Accordingly, manually generating “complete” kerning tables is not practical for content processing applications.